package org.xliu.cs.openproject.codegenerator.pojo;

import java.util.Map;
import java.util.HashMap;

// Java 基本类型到C++类型的映射
public class BasicTypeMapping {
    private static final Map<String, String> typeMapping = new HashMap<>();
    
    static {
        // 基本类型映射
        typeMapping.put("int", "int");
        typeMapping.put("Integer", "int");
        typeMapping.put("long", "long long");
        typeMapping.put("Long", "long long");
        typeMapping.put("float", "float");
        typeMapping.put("Float", "float");
        typeMapping.put("double", "double");
        typeMapping.put("Double", "double");
        typeMapping.put("boolean", "bool");
        typeMapping.put("Boolean", "bool");
        typeMapping.put("String", "std::string");
        // 默认情况下，枚举类型保持原名称作为C++类型
    }

    public static String getCppTypeForJavaType(String javaType) {
        // 如果是已知的基本类型映射，则使用映射值
        if (typeMapping.containsKey(javaType)) {
            return typeMapping.get(javaType);
        }
        
        // 如果不是基本类型，假设它是一个自定义类或枚举，直接返回类型名
        // 在C++中，这将假定存在同名的类或枚举定义
        return javaType;
    }
    
    public static void addTypeMapping(String javaType, String cppType) {
        typeMapping.put(javaType, cppType);
    }
}